Mobile Legends: Bang Bang is a MOBA game (Multiplayer online battle arena) for mobile devices with Android and iOS developed by Shanghai Moonton. The game was originally released in Asia on 11th of June 2016.
In the game there are 2 opposing teams consisting of 5 players each. There are around 90 champions (character) to choose from. Each character is different and may be used for different purposes depending on their skills and abillities. In that way one can distinguish mages, assasins and some more types of champions. Main task is to destroy enemies’ defence towers resulting in concquering their base (yup, it’s very boring but somehow very popular).
The game was getting more and more attention in Poland for a couple of years now. The graph below presents interest over time for google query “Mobile Legends” and “MOBA” in Poland. As you can see around 2017 there was a hugh increase in popularity of the game while interest in MOBA games in general was falling down gradually in past 5 years. However in March and April 2020 they experienced a rapid renaissance. We can probably associate it with a lockdown caused by COVID-19 outbreak.
As stated above there are several types of characters in that game so we will try to label them based on their characteristics. In order to do so we are going to implement Principal Component Analysis to reduce dimentionallity and then k-means method to cluster them. Although the labels are known such an analysis may be helpful for maintaining characters’ skill sets in a balance way.
First of all let’s have a look on how our data looks like. In the table below you can find all characters in alphabetical order.
One important remark is although the list below present all playable characters right now we are going to consider it as sample since the characters’ set is being constantly updated with new characters - in that way statistical inference can be justified.
| HERO | MV_SPD | MGC_DFN | MANA | HP_RGN | P_ATK | P_DFN | HP | ATK_SPD | MANA_RGN | ROLE | SPECIALLY |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Akai | 260 | 10 | 422 | 42 | 115 | 24 | 2769 | 0.8500 | 12 | TK | Initiator |
| Aldous | 260 | 10 | 405 | 49 | 129 | 21 | 2718 | 0.8360 | 18 | FT | Push |
| Alice | 240 | 10 | 493 | 36 | 114 | 21 | 2573 | 0.8000 | 18 | MG | Charge |
| Alpha | 260 | 10 | 453 | 39 | 121 | 20 | 2646 | 0.9160 | 31 | FT | Charge |
| Alucard | 260 | 10 | 0 | 39 | 123 | 21 | 2821 | 0.9000 | 0 | FT | Charge |
| Angela | 240 | 10 | 515 | 34 | 115 | 15 | 2421 | 0.7920 | 18 | SP | Regen |
| Argus | 260 | 10 | 0 | 40 | 124 | 21 | 2628 | 0.9160 | 0 | FT | Charge |
| Aurora | 245 | 10 | 750 | 34 | 110 | 17 | 2501 | 0.8000 | 23 | MG | Crowrd Control |
| Badang | 255 | 10 | 0 | 40 | 119 | 23 | 2708 | 0.9080 | 0 | FT | Charge |
| Balmond | 260 | 10 | 0 | 47 | 119 | 25 | 2836 | 0.8500 | 0 | FT | Charge |
| Bane | 260 | 10 | 433 | 42 | 117 | 23 | 2559 | 0.8500 | 12 | FT | Push |
| Belerick | 250 | 10 | 450 | 42 | 110 | 15 | 2719 | 0.8100 | 12 | TK | Regen |
| Bruno | 240 | 10 | 439 | 30 | 128 | 17 | 2522 | 0.8500 | 15 | MM | Reap |
| Change | 240 | 10 | 505 | 34 | 115 | 16 | 1301 | 0.8080 | 21 | MG | Reap |
| Chou | 260 | 10 | 0 | 39 | 121 | 23 | 2708 | 0.8840 | 0 | FT | Charge |
| Claude | 240 | 10 | 450 | 40 | 97 | 14 | 2370 | 0.8260 | 16 | MM | Reap |
| Clint | 240 | 10 | 450 | 36 | 115 | 20 | 2530 | 0.8420 | 15 | MM | Burst |
| Cyclops | 240 | 10 | 500 | 38 | 112 | 18 | 2521 | 0.8000 | 20 | MG | Damage |
| Diggie | 250 | 10 | 490 | 36 | 115 | 16 | 2351 | 0.8000 | 20 | SP | Crowrd Control |
| Dyrroth | 265 | 10 | 0 | 41 | 117 | 22 | 2758 | 0.9160 | 0 | FT | Charge |
| Esmeralda | 240 | 10 | 502 | 36 | 114 | 21 | 2573 | 0.8000 | 20 | MG | Regen |
| Estes | 240 | 10 | 545 | 36 | 120 | 13 | 2221 | 0.8000 | 18 | SP | Regen |
| Eudora | 250 | 10 | 468 | 38 | 112 | 19 | 2524 | 0.8000 | 16 | MG | Burst |
| Fanny | 265 | 10 | 0 | 33 | 126 | 19 | 2526 | 0.8940 | 0 | ASS | Charge |
| Faramis | 245 | 10 | 500 | 34 | 118 | 20 | 2543 | 0.7840 | 19 | SP | Initiator |
| Franco | 260 | 10 | 440 | 46 | 116 | 25 | 2709 | 0.8260 | 10 | TK | Initiator |
| Freya | 260 | 10 | 462 | 49 | 109 | 22 | 2801 | 0.8760 | 14 | FT | Charge |
| Gatotkaca | 260 | 10 | 420 | 42 | 120 | 20 | 2629 | 0.8180 | 12 | TK | Crowrd Control |
| Gord | 240 | 10 | 570 | 32 | 110 | 13 | 2478 | 0.7720 | 25 | MG | Damage |
| Granger | 240 | 10 | 0 | 27 | 110 | 15 | 2490 | 0.8180 | 0 | MM | Reap |
| Grock | 260 | 10 | 430 | 42 | 135 | 21 | 2819 | 0.8100 | 12 | TK | initiator |
| Guineveree | 260 | 10 | 0 | 39 | 126 | 18 | 2528 | 0.9180 | 0 | MG | Charge |
| Gusion | 260 | 10 | 460 | 39 | 119 | 18 | 2578 | 0.8920 | 16 | ASS | Charge |
| Hanabi | 245 | 10 | 390 | 30 | 105 | 17 | 2510 | 0.8500 | 15 | MM | Regen |
| Hanzo | 260 | 10 | 0 | 35 | 118 | 17 | 2594 | 0.8700 | 0 | ASS | Reap |
| Harith | 240 | 10 | 490 | 36 | 114 | 19 | 2701 | 0.8400 | 18 | MG | Charge |
| Harley | 240 | 10 | 490 | 36 | 114 | 19 | 2501 | 0.8480 | 18 | MG | Burst |
| Hayabusa | 260 | 10 | 0 | 37 | 117 | 17 | 2629 | 0.8540 | 0 | ASS | Charge |
| Helcurt | 255 | 10 | 440 | 35 | 121 | 17 | 2599 | 0.8700 | 16 | ASS | Charge |
| Hilda | 260 | 10 | 0 | 42 | 123 | 24 | 2789 | 0.8420 | 0 | FT | Regen |
| Hylos | 260 | 10 | 430 | 92 | 105 | 17 | 3309 | 0.8260 | 12 | TK | Regen |
| Irithel | 260 | 10 | 438 | 35 | 118 | 17 | 2540 | 0.8260 | 15 | MM | Reap |
| Jawhead | 255 | 10 | 430 | 39 | 119 | 24 | 2778 | 0.9000 | 16 | FT | Charge |
| Johnson | 255 | 10 | 0 | 42 | 112 | 27 | 2809 | 0.8260 | 12 | TK | Crowrd Control |
| Kadita | 240 | 10 | 495 | 36 | 105 | 18 | 2491 | 0.8000 | 18 | MG | Burst |
| Kagura | 240 | 10 | 519 | 35 | 118 | 19 | 2556 | 0.8160 | 21 | MG | Damage |
| Kaja | 270 | 10 | 400 | 52 | 120 | 16 | 2609 | 0.8420 | 12 | SP | Initiator |
| Karina | 260 | 10 | 431 | 29 | 121 | 20 | 2633 | 0.9000 | 16 | ASS | Charge |
| Karrie | 240 | 10 | 440 | 40 | 120 | 17 | 2578 | 0.8396 | 15 | MM | Reap |
| Khufra | 255 | 10 | 460 | 47 | 117 | 19 | 2859 | 0.7860 | 15 | TK | Crowrd Control |
| Kimmy | 245 | 10 | 100 | 40 | 104 | 22 | 2450 | 0.8260 | 0 | MM | Damage |
| Lancelot | 260 | 10 | 450 | 35 | 124 | 16 | 2549 | 0.8700 | 16 | ASS | Charge |
| Lapu - Lapu | 260 | 10 | 0 | 35 | 119 | 21 | 2628 | 0.9000 | 16 | FT | Charge |
| Layla | 240 | 10 | 424 | 27 | 130 | 15 | 2500 | 0.8500 | 14 | MM | Reap |
| Leomord | 240 | 10 | 0 | 35 | 126 | 21 | 2738 | 0.8440 | 0 | FT | Push |
| Lesley | 240 | 10 | 0 | 36 | 131 | 14 | 2490 | 0.8260 | 0 | MM | Reap |
| Lolita | 260 | 10 | 480 | 48 | 115 | 27 | 2679 | 0.7860 | 12 | TK | Crowrd Control |
| Lunox | 250 | 10 | 540 | 34 | 115 | 15 | 2521 | 0.8080 | 23 | MG | Damage |
| Martis | 260 | 10 | 405 | 35 | 128 | 25 | 2738 | 0.8680 | 16 | FT | Reap |
| Minotaur | 260 | 10 | 0 | 44 | 123 | 18 | 2709 | 0.7300 | 0 | TK | Crowrd Control |
| Minsitthar | 260 | 10 | 380 | 37 | 121 | 23 | 2698 | 0.8520 | 16 | FT | Initiator |
| Miya | 240 | 10 | 445 | 30 | 129 | 17 | 2524 | 0.8500 | 15 | MM | Reap |
| Moscov | 240 | 10 | 420 | 32 | 125 | 16 | 2455 | 0.8140 | 15 | MM | Push |
| Nana | 250 | 10 | 510 | 34 | 115 | 17 | 2501 | 0.8640 | 18 | SP | Poke |
| Natalia | 260 | 10 | 486 | 35 | 121 | 18 | 2589 | 0.8860 | 18 | ASS | Charge |
| Odette | 240 | 10 | 495 | 34 | 105 | 18 | 2491 | 0.8000 | 23 | MG | Burst |
| Pharsa | 240 | 10 | 490 | 34 | 109 | 15 | 2421 | 0.7904 | 18 | MG | Damage |
| Rafaela | 245 | 10 | 545 | 36 | 117 | 15 | 2441 | 0.7920 | 23 | SP | Regen |
| Roger | 240 | 10 | 450 | 36 | 128 | 22 | 2730 | 0.8420 | 15 | FT | Reap |
| Ruby | 260 | 10 | 430 | 30 | 114 | 23 | 2859 | 0.8580 | 14 | FT | Crowrd Control |
| Saber | 260 | 10 | 443 | 35 | 118 | 17 | 2599 | 0.8700 | 16 | ASS | Charge |
| Selena | 240 | 10 | 490 | 34 | 110 | 15 | 2401 | 0.8040 | 18 | ASS | Reap |
| Sun | 260 | 10 | 400 | 41 | 114 | 23 | 2758 | 0.9160 | 16 | FT | Charge |
| Terizla | 255 | 10 | 430 | 54 | 129 | 19 | 2728 | 0.8000 | 21 | FT | Damage |
| Thamuz | 250 | 10 | 0 | 37 | 107 | 22 | 2758 | 0.8440 | 0 | FT | Reap |
| Tigreal | 260 | 10 | 450 | 42 | 112 | 25 | 2890 | 0.8260 | 12 | TK | Crowrd Control |
| Uranus | 260 | 10 | 455 | 32 | 115 | 20 | 2489 | 0.8340 | 12 | TK | Regen |
| Vale | 250 | 10 | 490 | 34 | 115 | 15 | 2401 | 0.8000 | 21 | MG | Crowrd Control |
| Valir | 245 | 10 | 495 | 34 | 105 | 18 | 2516 | 0.8000 | 18 | MG | Burst |
| Vexana | 245 | 10 | 490 | 38 | 112 | 17 | 2481 | 0.8000 | 20 | MG | Poke |
| Yi Sun-Shin | 250 | 10 | 438 | 36 | 124 | 18 | 2520 | 0.8580 | 15 | MM | Reap |
| Zhask | 240 | 10 | 490 | 34 | 107 | 15 | 2401 | 0.8000 | 20 | MG | Push |
| Zilong | 265 | 10 | 405 | 35 | 123 | 25 | 2689 | 0.9640 | 16 | FT | Charge |
One important thing we should be interested in is the variability of champions characteristics. Below you can see the coefficient of variation (in %).
| MV_SPD | MGC_DFN | MANA | HP_RGN | P_ATK | P_DFN | HP | ATK_SPD | MANA_RGN |
|---|---|---|---|---|---|---|---|---|
| 3.68 | 0 | 55.7 | 20.9 | 6.19 | 17.79 | 8.22 | 5.02 | 56.95 |
The variabiliy of mana and mana regeneration exeeds 50% whereas for health points regeneration and armor it’s about 20%. We will have to check the data for outliers as those values might be inflated for instance just by a single observation. Rest of the variables vary just a bit (under 10%). The value for magic resistance is constant for every character so we are going to drop that variable in further analysis.
Now let’s look for some possible relationships and check distributions of the variables.
We can see some relationships - f.e. mana vs. mana regeneration and health points vs. armor and many more - we are going to investigate them soon.
There are some outliers - note a champion whose health point regeneration ability is almost 3 times more powerful than the mean for the sample. We can also see a champion whose health points ability is about 2 times weaker than the average. Let’s find out who are those people.
| HERO | MV_SPD | MANA | HP_RGN | P_ATK | P_DFN | HP | ATK_SPD | MANA_RGN | ROLE | SPECIALLY |
|---|---|---|---|---|---|---|---|---|---|---|
| Hylos | 260 | 430 | 92 | 105 | 17 | 3.309 | 0.826 | 12 | TK | Regen |
| Change | 240 | 505 | 34 | 115 | 16 | 1.301 | 0.808 | 21 | MG | Reap |
For the sake of analysis we are going to remove both of them from our “sample”.
Density functions for variables like movement speed, mana and mana regenerations seem to be bimodal - it is clear sign there are some subpopulations in our “sample” so it is reasonable to conduct cluster analysis.
We can check the correlations and their significance - just for fun since Simson paradox might be present.